/******************************************************************* ExampleRequest.c Some Notes: I write my defines all in uppercase. All defines starting with "MSG_" are from the buildin.cd. *********************************************************************/ #include "includes/ExampleRequest.h" void ExampleRequest( STRPTR args, struct Screen *screen, IPCData *ipc ) { ERData *erd; // allocate some memory from our globally pool if( (erd = AllocMemH(mempool, sizeof(ERData))) ) { if( *args ) { erd->ptr_read = args; // going to the end of the args while( *erd->ptr_read++ ); // it does point at least at the "\0" of the string, // Jonathan does also append a some other stuff, we // want this not at this stage :-) erd->ptr_read -= 3; // Now we can make a reversed copy erd->ptr_write = erd->buffer; while( ((ULONG) erd->ptr_read) >= ((ULONG) args) ) { *erd->ptr_write++ = *erd->ptr_read--; erd->count++; } // since we have used our memorypool with the flag // MEMF_CLEAR and we have not used it before, we must // not append a "\0" to erd->buffer } sprintf( erd->output, "%s : %s%s : %s\n%s : %ld", DOpusGetString( locale, MSG_ARGUMENTS ), args, DOpusGetString( locale, MSG_REVERSED ), erd->buffer, DOpusGetString( locale, MSG_COUNTED ), erd->count ); // now we are ready to open our requester // we do not check here the result, but should be at least // no problem for you... AsyncRequestTags( ipc, REQTYPE_SIMPLE, NULL, NULL, NULL, AR_Screen, screen, AR_Title, DOpusGetString(locale, MSG_ER_TITLE), AR_Message, erd->output, AR_Button, DOpusGetString(locale, MSG_OKAY_BUTTON), TAG_DONE ); // free our memory FreeMemH( erd ); } }